﻿<?xml version="1.0" encoding="utf-8"?>

<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" elementFormDefault="qualified" attributeFormDefault="unqualified">

  <!-- Schema documentation -->
  <annotation>
    <documentation>
      This schema definition defines block inline types for the CS Schema.
      This schema is part of the base layer.
    </documentation>
  </annotation>

  <!-- include and import declarations -->
  <include schemaLocation="inline.xsd" />
	
  <!-- Element declarations -->
  <element name="code">
    <annotation>
      <documentation>
        The code element describes a code fragment.
      </documentation>
      <appinfo>
        <doc:localizable>false</doc:localizable>
        <doc:type>paragraph</doc:type>
      </appinfo>
    </annotation>
    <complexType mixed="true">
      <choice minOccurs="0" maxOccurs="unbounded">
        <element name="legacyItalic" type="maml:textType" />
        <element name="codeFeaturedElement" type="maml:textType" />
        <element ref="maml:placeholder" />
        <element name="comment" type="string">
          <annotation>
            <documentation>
              The comment element allows for the description of code/developer 
              comments within a code block.
            </documentation>
            <appinfo>
              <doc:localizable>true</doc:localizable>
              <doc:type>paragraph</doc:type>
            </appinfo>
          </annotation>
        </element>
      </choice>
      <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup" />
      <attribute name="language" type="maml:devLanguagesType">
        <annotation>
          <documentation>
            The language attribute describes the programming language used in a code sample or
            some other programattic structure.
          </documentation>
        </annotation>
      </attribute>
    </complexType>
  </element>

  <simpleType name="codeReferenceStringType">
    <restriction base="token"></restriction>
  </simpleType>

  <complexType name="codeReferenceType" mixed="false">
    <simpleContent>
      <extension base="maml:codeReferenceStringType"></extension>
    </simpleContent>
  </complexType>

  <element name="codeReference" type="maml:codeReferenceType">
    <annotation>
      <documentation>
        This element holds a reference to a block of code.
      </documentation>
      <appinfo>
        <doc:localizable>false</doc:localizable>
        <doc:type>paragraph</doc:type>
      </appinfo>
    </annotation>
  </element>

  <group name="codeGroup">
    <choice>
      <element ref="maml:code" />
      <element ref="maml:codeReference" />
    </choice>
  </group>

  <element name="computerOutput" type="maml:inlineType">
    <annotation>
      <documentation>
        The computerOutput element describes UI or console output.
      </documentation>
      <appinfo>
        <doc:localizable>true</doc:localizable>
        <doc:type>paragraph</doc:type>
      </appinfo>
    </annotation>
  </element>
	
  <!-- group declarations -->
  <group name="blockSoftwareGroup">
    <choice>
      <group ref="maml:codeGroup" />
      <element ref="maml:computerOutput" />
    </choice>
  </group>
</schema>